package es.ucm.fdi.isbc.viviendas.representacion;

import java.util.StringTokenizer;
import jcolibri.method.retrieve.FilterBasedRetrieval.predicates.FilterPredicate;;

public class FiltroLocalizacion implements FilterPredicate {

	@Override
	public boolean compute(Object o1, Object o2) {

		if (o1 == null || o2 == null)
			return false;

		String loc1 = new String();
		String loc2 = new String();
		double similitud = 0;
		double profpadre = 0, profhijo1 = 0, profhijo2 = 0;
		boolean igual;
		loc1 = (String) o1;
		loc2 = (String) o2;
		StringTokenizer st1 = new StringTokenizer(loc1, "/");
		StringTokenizer st2 = new StringTokenizer(loc2, "/");

		igual = true;
		while (st1.hasMoreTokens() && st2.hasMoreTokens() && igual) {
			loc1 = st1.nextToken();
			loc2 = st2.nextToken();
			if (loc1.equals("Cualquiera") || loc2.equals("Cualquiera")) return true;
			if (loc1.equals(loc2)) {
				profpadre += 1;
				profhijo1 += 1;
				profhijo2 += 1;
			} else
				igual = false;
		}

		if (profpadre > 0) {

			while (st1.hasMoreTokens()) {
				st1.nextToken();
				profhijo1 += 1;
			}

			while (st2.hasMoreTokens()) {
				st2.nextToken();
				profhijo2 += 1;
			}

			if (profhijo1 > profhijo2) {

				similitud = profpadre / profhijo1;
			} else {

				similitud = profpadre / profhijo2;
			}

		}
		if (similitud>1.0 || similitud <0.0) System.out.println("\n-------------------------------Similitud localizacion ERRONEA:"+Double.toString(similitud)+"\n");
		return (similitud>0.3);
	}

}
